/**
 * 1. 花费 aa 秒点击字母按键。
 * 2. 花费 bb 秒按一下大写锁定切换大小写。
 * 3. 花费 cc 秒按下 \text{shift}shift 键同时按下字母按键输入。
 * 4. 花费 dd 秒按下数字按键，但是由于炸鸡的鸡爪比较不受控制，按数字按键的同时一定会按下一次大写锁定键。
 * 
 * 令Ui为打到Si且大写熄灭所用的最短时间
 * Vi为到Si且大写亮着的最短时间，
 * min(U[n-1], V[n-1])即为答案
 */
#include <bits/stdc++.h>
using namespace std;

using llt = long long;
llt const MOD = 998244353LL;

llt A, B, C, D;
vector<llt> U, V;
string S;

llt proc(){
    int n = S.length();
    U.assign(n, 0);
    V.assign(n, 0);

    if(isupper(S[0])){
        U[0] = min(B + A + B, C);
        V[0] = min(B + A, C + B);
    }else if(islower(S[0])){
        U[0] = min(A, B + C + B);
        V[0] = min(A + B, B + C);
    }else{
        U[0] = D + B;
        V[0] = D;
    }

    for(int i=1;i<n;++i){
        if(isupper(S[i])){ // 大小字母
            // cap off
            U[i] = min(U[i - 1] + min(B + A + B, C), V[i - 1] + min(A + B, C + B));
            // cap on
            V[i] = min(U[i - 1] + min(B + A, C + B), V[i - 1] + min(A, B + C + B));
        }else if(islower(S[i])){
            // cap off
            U[i] = min(U[i - 1] + min(A, B + C + B), V[i - 1] + min(B + A, C + B));
            V[i] = min(U[i - 1] + min(B + A, C + B), V[i - 1] + min(B + A + B, C));
        }else{
            U[i] = min(U[i - 1] + D + B, V[i - 1] + D);
            V[i] = min(U[i - 1] + D, V[i - 1] + D + B);
        }
    }
    return min(U[n - 1], V[n - 1]);
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    cin >> A >> B >> C >> D >> S;
    cout << proc() << endl;
    return 0;
}